package com.emeraldparser.util;

import com.google.common.collect.ImmutableCollection;

public abstract class ImmutableAutomaton<V, E> extends ImmutableGraph<V, E> implements Automaton<V, E> {

	public static class Builder<V, E> {
		
		public ImmutableAutomaton<V, E> build() {
			return null; // TODO
		}
		
	}

	public static <V, E> Builder<V, E> builder() {
		return new Builder<V, E>();
	}

	@Override
	public abstract ImmutableCollection<V> getStartVertices();

	@Override
	public abstract ImmutableCollection<V> getRejectVertices();

	@Override
	public abstract ImmutableCollection<V> getAcceptVertices();

	@Override
	public final boolean addGraph(Graph<? extends V, ? extends E> graph) {
		throw new UnsupportedOperationException();
	}

	@Override
	public final boolean addAll(Automaton<? extends V, ? extends E> automaton) {
		throw new UnsupportedOperationException();
	}

	@Override
	public final boolean addStartVertex(V startVertex) {
		throw new UnsupportedOperationException();
	}

	@Override
	public final boolean addAcceptVertex(V acceptVertex) {
		throw new UnsupportedOperationException();
	}

	@Override
	public final boolean addRejectVertex(V rejectVertex) {
		throw new UnsupportedOperationException();
	}

}
